package com.java.second_goods.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.java.second_goods.common.utils.StringUtils;
import com.java.second_goods.entity.Banner;
import com.java.second_goods.mapper.BannerMapper;
import com.java.second_goods.service.BannerService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Arrays;
import java.util.List;

/**
 * 轮播图 服务层实现
 */
@Service
public class BannerServiceImpl extends ServiceImpl<BannerMapper, Banner> implements BannerService {

    @Autowired
    private BannerMapper bannerMapper;

    /**
     * 查询轮播图信息
     *
     * @param id 轮播图ID
     * @return 轮播图信息
     */
    @Override
    public Banner selectBannerById(Integer id) {
        return bannerMapper.selectById(id);
    }

    /**
     * 查询轮播图列表
     *
     * @param banner 轮播图信息
     * @return 轮播图集合
     */
    @Override
    public List<Banner> selectBannerList(Banner banner) {
        LambdaQueryWrapper<Banner> queryWrapper = new LambdaQueryWrapper<>();
        // 构建查询条件
        if (banner != null) {
            if (StringUtils.isNotEmpty(banner.getTitle())) {
                queryWrapper.like(Banner::getTitle, banner.getTitle());
            }
            if (StringUtils.isNotEmpty(banner.getType())) {
                queryWrapper.eq(Banner::getType, banner.getType());
            }
            if (banner.getStatus() != null) {
                queryWrapper.eq(Banner::getStatus, banner.getStatus());
            }
        }
        // 按排序升序排列
        queryWrapper.orderByAsc(Banner::getSortOrder);
        return bannerMapper.selectList(queryWrapper);
    }

    /**
     * 查询有效的轮播图列表
     *
     * @return 轮播图列表
     */
    @Override
    public List<Banner> selectEnabledBanners() {
        return bannerMapper.selectEnabledBanners();
    }

    /**
     * 根据类型查询轮播图列表
     *
     * @param type 类型
     * @return 轮播图列表
     */
    @Override
    public List<Banner> selectBannersByType(String type) {
        return bannerMapper.selectBannersByType(type);
    }

    /**
     * 新增轮播图
     *
     * @param banner 轮播图信息
     * @return 结果
     */
    @Override
    public int insertBanner(Banner banner) {
        // 设置默认值
        if (banner.getStatus() == null) {
            banner.setStatus(1);
        }
        if (banner.getSortOrder() == null) {
            banner.setSortOrder(0);
        }
        return bannerMapper.insert(banner);
    }

    /**
     * 修改轮播图
     *
     * @param banner 轮播图信息
     * @return 结果
     */
    @Override
    public int updateBanner(Banner banner) {
        return bannerMapper.updateById(banner);
    }

    /**
     * 删除轮播图信息
     *
     * @param id 轮播图ID
     * @return 结果
     */
    @Override
    public int deleteBannerById(Integer id) {
        return bannerMapper.deleteById(id);
    }

    /**
     * 批量删除轮播图信息
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    @Override
    public int deleteBannerByIds(Integer[] ids) {
        return bannerMapper.deleteBatchIds(Arrays.asList(ids));
    }

    /**
     * 更新轮播图状态
     *
     * @param bannerId 轮播图ID
     * @param status 状态
     * @return 结果
     */
    @Override
    public int updateBannerStatus(Integer bannerId, Integer status) {
        return bannerMapper.updateBannerStatus(bannerId, status);
    }
}